import validator from "validator";
import { IUserDocument } from "../models/user";

export interface RegisterInput extends Partial<IUserDocument> {
	confirmPassword?: string;
}
export interface UserPayload {
	id: IUserDocument["_id"];
}
export interface RegisterInputValidateResult {
	errors: RegisterInput;
	valid: boolean;
}

export const validateRegisterInput = (
	username: string,
	password: string,
	confirmPassword: string,
	email: string
): RegisterInputValidateResult => {
	let errors: RegisterInput = {};
	if (username == undefined || validator.isEmpty(username)) {
		errors.username = "用户名不能为空";
	}
	if (password == undefined || validator.isEmpty(password)) {
		errors.password = "密码不能为空";
	}
	if (confirmPassword == undefined || validator.isEmpty(confirmPassword)) {
		errors.password = "确认密码不能为空";
	}
	if (!validator.equals(password, confirmPassword)) {
		errors.confirmPassword = "确认密码和密码不相等";
	}
	if (email == undefined || validator.isEmpty(password)) {
		errors.email = "邮箱不能为空";
	}
	if (!validator.isEmail(email)) {
		errors.email = "邮箱格式必须合法";
	}
	return { errors, valid: Object.keys(errors).length == 0 };
};
